<?php
/*
tcp 协议
数据库
	数据表每个字段 不容许为空 给上默认值
	数据类型选择小的类型

	category
	cname  char(50) 分类名称
	parent_id  smallint(6) 分类的父分类id
	isrec  tinyint  是否推荐 0 不推荐 1推荐
-----------------------------------------
控制器
所有控制器继承TP的控制器,后期做公共操作,比如登录,
需要修改TP的源代码。所以创建一个公共控制器,该控制器
继承TP的控制器。然后让其他的所有控制器继承这个公共
控制器


商品分类的作用就是帮助用户快速找到自己想买的商品
因此一个商品都归属某一个分类.有时有些商品希望在多个
分类下显示。因此可以给商品设置扩展分类来实现
-----------------------------------------
C 读取配置  （动态配置）
U URL生成	（控制器 URL生成）
D 实例化		(模型 模型实例化)
M 实例化		(模型 模型实例化)
T 生成模板文件名 （视图 获取模板地址）
S 缓存初始化	（缓存 数据缓存）
I 获取变量值	 I('get.id'); //相当于$_GET['id']
fetchSql  获取sql语句
-----------------------------------------
商品分类
显示添加页面
自定义字段  自己指定tp不会查询 可以帮助优化
自动验证
递归无限极分类

模板继承使用
公共模板 public/base

列表显示
index

分类删除
dels
	如果删除的分类下有子分类,不能删除

分类编辑
edit
提交分类数据提交修改
过滤设置父分类为自己或者自己下的子分类
根据修改的分类的标识,获取到自己下的所有的子分类
根据提交的parent_id的值,判断如果等于当前修改的分类ID或者是当前分类下的所有子分类的ID不容许修改


商品表
goods_name varchar
goods_sn char 30  货号
cate_id smallint   分类id
market_price decimal 10 默认0.00  定价
shop_price decimal  10  本店价格
goods_img varchar     缩略图
goods_thumb  varchar  缩略小图
is_hot   tinyint   是否推荐
is_rec  tinyint  是否热卖
is_new    tinyint  是否新品
addtime  int   添加时间
isdel  tinyint  商品是否删除状态
is_sale  tinyint  商品是否销售

1钩子函数
2.uniqid

编辑器使用
图片上传


商品扩展分类的中间表 shop_goods_cate
id
goods_id int(11) 商品ID标识
cate_id   分类id标识

商品扩展分类的入库
	钩子函数获取数据入库
模板继承

商品列表显示所有数据
	listData
分页显示商品列表
	当前每页显示多少数据 总数据条数 调用TP方法获取分页导航数据并赋值给模板 
	获取当前所在的页码 根据页码及尺寸算出获取的数据偏移量
	
商品列表搜索
	搜索功能本质就是表单提交给当前的URL地址,然后接受搜索条件
	拼接处MySQL查询条件的where条件

	用分类作为搜索条件
	推荐状态,上下架,关键字搜索

商品删除
	setField
商品修改显示基本信息
	显示
	修改
解决商品显示问题
	没有扩展分类
		对于没有扩展分类的商品手动追加一个元素
	htmlspecialchars_decode
商品修改入库
	`商品货号的问题
扩展分类入口代码优化
	增加商品扩展分类模型 insertExtCate
缩略图代码优化
	缩略图代码封装 uploadImg
	判断是否上传图片
回收站商品列表显示
trash
回收站商品还原
recover
商品彻底删除
remove
	unlink   删除函数


RBAC权限
	能否访问某个页面对应的方法

	用户表存储用户信息
	使用权限表记录后台中的权限(在权限表中记录对应的控制器以及方法的名称)
	用户权限的中间表记录用户具备哪些权限
	
	用户表 角色表 权限表 用户角色表 角色权限表
	RBAC要实现的功能
		用户管理功能
		角色管理功能
		权限管理功能(权限的增删改查一般由开发者实现)
		实现给用户赋予角色
		实现能给角色赋予权限
		根据用户角色不同显示不同的导航菜单
		针对所有的用户访问判断是否能够访问
		预留默认超级管理员角色
		预留超级管理员的用户
RBAC五张数据表创建
用户表
	shop_admin
	username 用户名
	password char(30) 密码
	is_open
角色表 
	shop_role
	role_name 角色名称
权限表
	shop_rule
	rule_name 权限名称
	parent_id 上级权限的id 0:顶级权限
	module_name 模块名称
	controller_name 控制器名称
	action_name	方法名称
	is_shop tinyint(1)	 菜单设置是否显示 1显示 0不显示
用户角色表 
	shop_admin_role
	admin_id int(11) 用户id
	role_id int(11)  角色id
角色权限表
	shop_role_rule
	role_id   角色id
	rule_id 权限id
	
角色添加入库
	角色名称
	角色名称不能重复
角色列表显示
	分页
	编号 角色名称 操作 
	处理超级管理员  gt  不能显示编辑和删除
角色删除
	超级管理员不能删除
	remove
角色修改
	判断不能修改超级管理员
管理员添加
	admin
	用户名
	密码
	所属角色

	用户名不能重复
	自动完成 密码加密
	钩子函数实现中间表入库
管理员列表显示
	alias join
管理员删除
	remove
	删除用户信息
	删除角色信息
	使用事务
管理员修改
	根据用户ID获取用户的基本信息以及对应的角色ID findOne
权限的添加功能

权限的列表删除以及编辑功能




显示所有的权限信息
	disfetch 
	角色列表赠赋予权限页面

	下拉页面
	提交按钮
权限分配入库
	修改选择框对应的value值
	修改模板增加隐藏域
	查看提交过来的数据
	disfetch
	删除角色本来权限
	将最新权限信息写入数据库
分配权限完善
	原有角色权限默认选中

权限认证
	管理员登陆到后台
	所有方法验证是否登陆
	对所有方法进行判断是否具备访问权限
	首先获取当前用户对应的角色信息
	超级管理员忽略权限认证
	普通管理员:数据库中的控制器，模型，方法组合为一维数组
	,当前URL组合成字符串进行对比
	导航菜单
	将权限信息赋值给模板,由模板进行显示
显示登录页面以及验证码使用
	创建控制器方法显示模板
	验证码创建
	点击验证码刷新
实现登录以及解决翻墙问题
	验证码验证
	调用模型验证账号密码
	保存用户的登录状态

-----
tp 使用cookie cookie();

权限认证
	增加属性保存信息
	根据用户信息获取对应的角色信息
	根据角色信息获取到对应的权限信息
	将权限信息格式化为一维数组保存到user中

	将对应的模型控制器方法名称进行拼接
	is_show判断是否 导航菜单的显示
	普通管理员 获取当前访问的url
	对当前访问的方法进行判断是否有权访问
	获取当前用户访问的URL
	设置后台首页具备访问权限
	实现首页中导航菜单显示
		将user属性中的权限赋值给模板
首页增加默认权限以及导航菜单显示
权限认证优化
	mysql优化中有个原则：能够避免从mysql中取数据就尽量避免,使用文件的方式存储信息
	当需要使用用户信息时,先到文件中读取,读取不到的情况下在到mysql读取然后将信息写
	入文件。(缓存)
	当某人角色对应的权限信息发生变化时,将当前角色下的所有文件信息删除。
增加方法处理超级管理员缓存进行更新

商品类型管理 shop_type
	创建商品类型数据表
	type_name 类型名称
	类型的增删改查
属性管理  shop_attribute
	attr_name 属性名称
	type_id  属性对应的类型
	attr_type  属性类型：单选1或者唯一2
	attr_input_type 表示属性的录入方法  1手工输入 2列表选择
	attr_value 列表选择的默认值 多个值用逗号隔开
属性添加页面
	手动输入时,默认值 多行文本框 不能使用
	js选中手动的时候 多行文本禁用
属性的入库
属性的列表显示
属性的编辑及删除

选项卡效果以及显示商品类型
	商品添加时候使用选项卡效果
根据类型切换显示属性
	选择到类型时候 显示出对应的属性
	explode() 分割字符串
	str_replace() 替换字符串
单选属性增加

属性入库
	type_id int 商品对应的类型
	创建商品属性中间表
	id
	goods_id 商品id
	attr_id	属性id
	attr_values 属性值
显示出修改的原始信息
	获取所有的类型
	获取当前商品对应的属性信息
属性的修改入库功能

属性显示的完善


商品修改时删除老图片
赋予权限 将商品管理做成商品一类 分类一类 点击管理变成全选状态
锁屏幕
添加角色按钮 查看当前拥有权限
a506717715
506717715@qq.com


eocheoch




拥有多少钱
消费以后记账  吃饭 娱乐  其他 备注
收入以后记账
月底总结出消费与收入情况


*/